// packageA/pages/iotExceptionAdd/iotExceptionAdd.js
const app = getApp();
import CommonService from '../../../utils/service/commonService.js';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
const util = require('../../../utils/util');
import Base64 from '../../../utils/Base64.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //传参来的信息
    paramFrom:null,
    //传参来的imei
    imei:'',
    //传参来的设备数据权限
    dataAuthority:[],
    //是否是从设备列表跳转来的
    isFormEquipment:false,

    //时间选择
    startTime:"",
    showStart:false,
    currentStart: new Date().getTime(),
    endTime:"",
    showEnd:false,
    currentEnd: new Date().getTime(),
    minDate:'',
    maxDate: new Date().getTime(),
    formatter (type, value) {
      if (type === 'year') {
        return `${value}年`
      } else if (type === 'month') {
        return `${value}月`
      } else if (type === 'day') {
        return `${value}日`
      } else if (type === 'hour') {
        return `${value}时`
      } else if (type === 'minute') {
        return `${value}分`
      } else if (type === 'second') {
        return `${value}秒`
      }
      return value
    },
    //异常类型选择框
    showType:false,
    //异常类型选择数据
    typeList:[{
      id:1,
      text:'连续工作时间过长'
    },{
      id:2,
      text:'工作无数据'
    },{
      id:3,
      text:'缺少数据'
    },{
      id:4,
      text:'其他'
    }],
    //选择的异常类型id
    typeId: '',
    //选择的异常类型名称
    typeName: '',
    //上传的图片
    imgUrls:[],
    //避免表单重复提交
    code:null,
    //提交按钮禁用
    disabled:false,
    //修改信息回显
    editInfo:{},
    //上传路径
    ossUploadUrl: app.globalData.ossUrl
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.getUserProfile({
      desc: '为您提供更好的服务',
      success: (res) => {}
    })
    
    //获取传参
    if(options.paramFrom){
      let obj=JSON.parse(options.paramFrom);
      this.setData({
        paramFrom:obj,
        imei: obj.imei,
        dataAuthority:obj.dataAuthority,
        isFormEquipment:true
      })
    }

    let user=app.globalData.userInfo;
    this.setData({
      code:Base64.encode(new Date() + user.userName)
    })
  },

  //显示开始时间
  onShowStart(){
    this.setData({
			showStart: true
    })
  },

  //隐藏开始时间
  onCloseStart(){
    this.setData({
			showStart: false
    })
  },

  //确认开始时间
  onConfirmStart(e) {
    this.setData({
      currentStart: e.detail,
      startTime:util.timeFormat(e.detail),
      minDate: e.detail
    })
    this.onCloseStart();
  },

  //显示结束时间
  onShowEnd(){
    this.setData({
			showEnd: true
    })
  },

  //隐藏结束时间
  onCloseEnd(){
    this.setData({
			showEnd: false
    })
  },

  //确认结束时间
  onConfirmEnd(e) {
    this.setData({
      currentEnd: e.detail,
      endTime:util.timeFormat(e.detail)
    })
    this.onCloseEnd();
  },

  //显示异常类型选择框
  onShowType(){
    this.setData({
			showType: true
    })
  },

  //隐藏异常类型选择框
  onCloseType(){
    this.setData({
			showType: false
    })
  },

  //确认异常类型
  onConfirmType(e){
    this.setData({
      typeId: e.detail.value.id,
      typeName: e.detail.value.text
    })
    this.onCloseType();
  },

  //提交表单
  confirmForm(e){
    //避免表单重复提交-先禁用按钮
    this.setData({
      disabled:true
    })

    let user=app.globalData.userInfo;
    let td=this.data;
    let obj=e.detail.value;
    let flag=false;

    //去空格
    let describe=obj.describe.trim(),
        contactPerson=obj.contactPerson.trim(),
        phone=obj.phone.trim();

    let imei='';
    if(td.imei){
      imei=td.imei;
      flag=true;
    }else{
      imei=obj.imei.trim();
      //物联网编码非空
      if(!this.formNotEmpty(imei,'imeiMessage','请输入物联网编码')){
        return;
      }
      //验证设备是否存在
      flag=this.isExist(imei).then(value => {
        if(!value){
          this.setData({
            imeiMessage: '设备不存在',
            disabled:true
          })
        }
        return value;
      });
    }

    //非空验证
    if(!this.formNotEmpty(describe,'describeMessage','请输入异常描述')){
      return;
    }
    if(!this.formNotEmpty(contactPerson,'contactPersonMessage','请输入上报人姓名')){
      return;
    }
    if(!this.formNotEmpty(phone,'phoneMessage','请输入手机号')){
      return;
    }

    //手机号格式
    if(!util.checkPhoneFormat(phone)){
      this.setData({
        phoneMessage: '手机号格式错误',
        disabled:true
      })
      return;
    }

    Promise.all([flag]).then(value => {
      let passed=value.every(val=>{
        return val;
      });

      if(passed){
        let param={
          className:'iotException',
          data:{
            requestToken:this.data.code,
            imei:imei,
            startTime:td.startTime,
            endTime:td.endTime,
            typeId:td.typeId,
            typeName:td.typeName,
            describe:describe,
            createUserId:user.id,
            contactPerson:contactPerson,
            phone:phone,
            reason:obj.reason,
            imgs:td.imgUrls,
            //状态：0未处理，1已处理
            state:0,
            dataAuthority:{
              depart:td.dataAuthority,
              role:['iot_admin','admin','data_admin']
            }
          }
        }

        //避免表单重复提交
        Toast.loading({
          duration: 0,
          forbidClick: true,
          message: '数据提交中...'
        });

        // console.log('~');
        // console.log(param);

        CommonService.goSave(param).then(res=>{
          if (res.statusCode == 200 && res.data.success == true){
            Toast.success('成功');
            this.setData({
              disabled:false
            })

            setTimeout(() => {
              //返回列表页并刷新数据
              this.backAndRefresh();
            }, 1000);
          }else{
            Toast.fail('操作失败');
          }
        }).catch((error) => {
        })

      }
    });
  },

  //非空验证（field要先去掉空格）
  formNotEmpty(field,messageField,messageCon){
    if(!field){
      let obj = {};
      obj[messageField] = messageCon;
      obj['disabled'] = true;
      this.setData(obj);
      return false;
    }else{
      return true;
    }
  },

  //验证设备是否存在
  isExist(imei){
    return new Promise((resolve, reject) => {
      let param={
        isAuth:false,
        className:'equipment',
        data:{
          imei:imei,
          nbl:Base64.encode(util.timeFormatDay(new Date())),
          selectFields:['id','dataAuthority']
        }
      }
      CommonService.goFindList(param).then(res=>{
        if (res.data.data && res.data.data.count && res.data.data.result) {
          this.setData({
            dataAuthority: res.data.data.result[0].dataAuthority.depart
          })
          resolve(true);
        } else {
          resolve(false);
        }
      }).catch((error) => {
        resolve(false);
      })
    });
  },

  //用户输入时清除错误提示
  clearMessage(e) {
    let field = e.target.dataset.message;
    let obj = {};
    obj[field] = "";
    obj['disabled'] = false;
    this.setData(obj);
  },

  //获取图片上传组件的传值
  getUploadUrl(data){
    let imgUrls=data.detail;
    if(imgUrls.length){
      this.setData({
        imgUrls: imgUrls
      })
    }
  },

  //返回列表页并刷新数据
  backAndRefresh(){
    let pages = getCurrentPages();
    let prevPage = pages[pages.length - 2];
    prevPage.refreshListAndPage();
    wx.navigateBack();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})
